package dao

import (
	"time"
)

// 这是 WechatAutoReply 的全局公开dao对象，被service层调用!
var WechatAutoReplyDao = wechatAutoReplyDao{}

// 微信自动回复
// 这是 wechat_auto_reply表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type WechatAutoReply struct {
	Id        int32     `json:"id" form:"id" db:"id" v:"id"`                         // 自增ID
	Typ       int8      `json:"typ" form:"typ" db:"typ" v:"typ"`                     // 回复类型:0-关键词回复；1-收到消息未找到回复；2-被关注回复
	Word      string    `json:"word" form:"word" db:"word" v:"word"`                 // 关键词
	MsgType   string    `json:"msg_type" form:"msg_type" db:"msg_type" v:"msg_type"` // 回复消息类型，和微信对应
	Content   string    `json:"content" form:"content" db:"content" v:"content"`     // 要回复的内容
	CreatedAt time.Time `json:"created_at" form:"created_at" db:"created_at" v:"created_at"`
	UpdatedAt time.Time `json:"updated_at" form:"updated_at" db:"updated_at" v:"updated_at"`
}

// 注意:这是 WechatAutoReply 的私有dao对象，只能在dao层内使用!
type wechatAutoReplyDao struct {
	InsertTemplate func(arg WechatAutoReply) (int64, error)                 //插入一条记录
	UpdateTemplate func(arg WechatAutoReply) (int64, error)                 //更新一条记录
	DeleteTemplate func(id int64) (int64, error)                            `arg:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (WechatAutoReply, error)                  `arg:"id"` //根据传入的主键获取一条记录
	List           func(arg WechatAutoReplyList) ([]WechatAutoReply, error) //模糊分页查询
}

/*
// 这是 wechat_auto_reply 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type WechatAutoReplyPostman struct {
id
typ
word
msg_type
content
created_at
updated_at

}*/

// 这是 wechat_auto_reply 表的批量请求参数
type WechatAutoReplyReq struct {
	List []WechatAutoReply `json:"list" form:"list"`
}

// 这是 wechatAutoReplyDao.List()方法的请求参数
type WechatAutoReplyList struct {
	Page
}
